#include <windows.h>
#include <windowsx.h>
#include "dialog.h"



// Procedura dialogowa
BOOL CALLBACK DlgPrzyciskiProc( HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
    switch( Msg )
    {
    case WM_INITDIALOG:
         Button_Enable(GetDlgItem(hwnd, IDC_BUTTON_ROZPOCZNIJ), FALSE);
         Button_Enable(GetDlgItem(hwnd, IDC_BUTTON_NASTEPNY), FALSE);
         Button_Enable(GetDlgItem(hwnd, IDC_BUTTON_PRZERWIJ), FALSE);
         
         break;
    case WM_COMMAND:
        {
            // reakcja na przyciski
            switch( LOWORD( wParam ) )
            {  
               case IDC_BUTTON_POKAZ_STATYSTYKI:
                    ShowWindow( hwndStatystyki, SW_SHOW );
                    break;
                case IDC_BUTTON_ROZPOCZNIJ:
                    sym->start();
                    if (sym->getTrybSymulacji() == 0) // reczny
                    {
                        Button_Enable(GetDlgItem(hwndPrzyciski, IDC_BUTTON_ROZPOCZNIJ), FALSE);
                        Button_Enable(GetDlgItem(hwndPrzyciski, IDC_BUTTON_NASTEPNY), TRUE);
                        Button_Enable(GetDlgItem(hwndPrzyciski, IDC_BUTTON_PRZERWIJ), TRUE);
                        EnableMenuItem(g_hMenuGlowny, IDMI_LOSUJ, MF_DISABLED ); 
                        EnableMenuItem(g_hMenuGlowny, IDMI_TRYB, MF_DISABLED ); 
                        EnableMenuItem(g_hMenuGlowny, IDMI_PARAMETRY, MF_DISABLED ); 
                        wypiszKomunikaty(); 
                        wstawElementy();                   
                    }
                    else if (sym->getTrybSymulacji() == 1) // automatyczny
                    {
                        Button_Enable(GetDlgItem(hwndPrzyciski, IDC_BUTTON_ROZPOCZNIJ), FALSE);
                        Button_Enable(GetDlgItem(hwndPrzyciski, IDC_BUTTON_NASTEPNY), FALSE);
                        Button_Enable(GetDlgItem(hwndPrzyciski, IDC_BUTTON_PRZERWIJ), TRUE);
                        EnableMenuItem(g_hMenuGlowny, IDMI_LOSUJ, MF_DISABLED ); 
                        EnableMenuItem(g_hMenuGlowny, IDMI_TRYB, MF_DISABLED ); 
                        EnableMenuItem(g_hMenuGlowny, IDMI_PARAMETRY, MF_DISABLED ); 
                        wypiszKomunikaty(); 
                        wstawElementy();  
                        
                        SetTimer(hwndGlowny, IDT_TIMER1, sym->getCzasKroku(), NULL);        
                    }
                    
                    break;
                    
                case IDC_BUTTON_NASTEPNY:
                    sym->krok();
                    if (sym->getKoniec() == true)
                    {
                          stats.push_back(*(sym->getStatystyki()));
                          wstawStatystyki();
                          Button_Enable(GetDlgItem(hwndPrzyciski, IDC_BUTTON_ROZPOCZNIJ), TRUE);
                          Button_Enable(GetDlgItem(hwndPrzyciski, IDC_BUTTON_NASTEPNY), FALSE);
                          Button_Enable(GetDlgItem(hwndPrzyciski, IDC_BUTTON_PRZERWIJ), FALSE); 
                          EnableMenuItem(g_hMenuGlowny, IDMI_LOSUJ, MF_ENABLED );  
                          EnableMenuItem(g_hMenuGlowny, IDMI_TRYB, MF_ENABLED ); 
                          EnableMenuItem(g_hMenuGlowny, IDMI_PARAMETRY, MF_ENABLED );            
                    }
                    ustawPasekPostepu();
                    wypiszKomunikaty(); 
                    ustawElementy();
                    break;
                    
                case IDC_BUTTON_PRZERWIJ:
                    if (sym->getTrybSymulacji() == 1)  KillTimer(hwndGlowny, IDT_TIMER1);
                    sym->stop();
                    Button_Enable(GetDlgItem(hwndPrzyciski, IDC_BUTTON_ROZPOCZNIJ), TRUE);
                    Button_Enable(GetDlgItem(hwndPrzyciski, IDC_BUTTON_NASTEPNY), FALSE);
                    Button_Enable(GetDlgItem(hwndPrzyciski, IDC_BUTTON_PRZERWIJ), FALSE); 
                    EnableMenuItem(g_hMenuGlowny, IDMI_LOSUJ, MF_ENABLED );  
                    EnableMenuItem(g_hMenuGlowny, IDMI_TRYB, MF_ENABLED ); 
                    EnableMenuItem(g_hMenuGlowny, IDMI_PARAMETRY, MF_ENABLED );    
                    wypiszKomunikaty();   
                    break;
            }
            InvalidateRect(hwndGlowny,0,TRUE);
        }
        break;
       
        default: return FALSE;
    } 
    return TRUE;
}
